#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
using Cephei.QL.Math;
using Cephei.QL;
using Cephei.QL.Models;
using Cephei.QL.Math.Optimization;
namespace Cephei.QL.Models.Shortrate
{
     // <summary> 
	// ! Single-factor models with an analytical formula for discount bonds should inherit from this class. They must then implement the functions \f$ A(t,T) \f$ and \f$ B(t,T) \f$ such that \f[ P(t, T, r_t) = A(t,T)e^{ -B(t,T) r_t}. \f]  \ingroup shortrate
	// </summary>
    [Guid ("DC25D6F9-04B1-4fcc-A789-851693C8D209"),ComVisible(true)]
	public interface IOneFactorAffineModel : Cephei.QL.Models.IShortRateModel, Cephei.QL.Models.IAffineModel
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 Double Discount(Double t);
        
		 Double DiscountBond(Double now, Double maturity, Double rate);
        
		 Double DiscountBond(Double now, Double maturity, Cephei.QL.Math.IArray factors);
    }

    // <summary> 
	// ! Single-factor models with an analytical formula for discount bonds should inherit from this class. They must then implement the functions \f$ A(t,T) \f$ and \f$ B(t,T) \f$ such that \f[ P(t, T, r_t) = A(t,T)e^{ -B(t,T) r_t}. \f]  \ingroup shortrate Factory
	// </summary>
   	[ComVisible(true)]
    public interface IOneFactorAffineModel_Factory // : Collection_Factory<IOneFactorAffineModel, ICell<IOneFactorAffineModel>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
    }
}

